In computer science, control flow may refer to the order in which individual statements, instructions, or function calls of a program created using imperative programming are executed or evaluated. Imperative programming can be a programming paradigm that uses statements that change a program's state. Typically, within an imperative programming language, a control flow statement is a statement which execution results in a choice being made as to which of two or more paths to follow. In various embodiments, programs created within imperative programming are vulnerable to control flow hijacking, such as via return oriented programming (ROP) attacks.